/**
* @version:1.0
* @author kevinnan.org.cn  2018212114@mail.hfut.edu.cn
* @date 2020/7/24
* @Content:灰度变换常用函数
*/

#ifndef GRAY_TRANSFORM_H
#define GRAY_TRANSFORM_H

#include <opencv2/highgui.hpp>
#include <opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;

typedef unsigned char uchar;

namespace graytransform{
	/**
	  * 伽马变换
	  */
	cv::Mat gammaTransform(cv::Mat originImage, float gamma, int constant=1);


	/**
	  * 图像反转
	  */
	cv::Mat imageReverse(cv::Mat originImage);


	/**
	  * 对数变换
	  */
	cv::Mat logarithmTransform(cv::Mat originImage, int constant=1);


	/**
	  * 绘制直方图
	  */
	void drawHistogram(cv::Mat originImage, string imgName);


	/**
	  * 直方图均衡
	  */
	cv::Mat equalizeHistogram(cv::Mat originImage);
}

#endif
